<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Set和Map的使用</title>
</head>

<body>
  <!-- 新曾的数据结构 -->
  <!--
    set类型于数组
      但里面不能存在重复的值
    set的用法
      new Set([a,b,c]);
      setArr.add("a") 往set数组里面添加一个值
      setArr.delete("a") 删除数组里面的a值
      setArr.has("a") 判断里面是否存在a值
      setArr.size() 判断数组的长度
      setArr.clear() 清空数组
    循环
      for(let items of setArr){
        console.log(items);
      };
      for(let key of setArr.keys()){
        console.log(key); 没多大意义的
      };
      for(let item of setArr.values()){
        cosnole.log(item);
      };
      for(let [key,value] of setArr.entries()){
        cosonle.log(`${key}  === ${value}`);
      };
      setArr.forEach((value,index)=>{
        console.log(value,index);
      });
      注意:setArr.add("a")添加完后返回自身
        1.可以写成以下代码：(链式编程)
          let arrlist = new Set().add("a").add("b").add("c");
        2.数组去重复
        3.转成数组就可以使用数组的方法了(map,filter)
          [...set]
    
    WeakSet({})与Set([])最大的区别就是存放的内容不同
      WeakSet()里面存放对象
      Set()里面存放数组
      WeakSet不常用的，知道有这个就好了
  -->
  <!--
    map相当于是json的增强
      key值可以是任何的内容
    map.set(key,value) 相当于设置一个值
    map.get(key) 相当于获取一个值
    map.delete(key) 相当于删除一项
    map.has(key) 判断有没有
    map.clear() 清空
    [...map].length 获取一个map的长度
    let map = new Map([[0, "好的"], [1, "拿了"], [2, "自己了吧"]]) 声明一个Map，并初始化map的数据,相当于一个二维数组给了map

    循环:
      for(let[key,value] of map){};
      for(let key of map.keys()){};
      for(let value of map.values){};
      for(let [key,value] of map.entries()){};
      map.forEach((value,key)=>{
      });
  -->

  <script>
    {
      let set = new Set(["a", "b", "c", "a"]);
      console.log(set);
      set.add("d"); //往set里面添加一个值
      console.log(set);
      set.delete("b"); //删除set里面的一个值
      console.log(set);
      let arr = ["1", "2", "3", "1", "2", "3", "5"];
      let arrSet = new Set(arr); //使用set可以数组去重
      console.log(arrSet);
      let arr1 = [...new Set(arr)]; //再将set转为数组
    }; {
      let set1 = new Set([1, 2, 3, 1, 4, 2]);
      set1 = new Set([...set1].map(val => val * 2)); //可以使用map进行修改了
      console.log(set1);

    }; {
      let map = new Map();
      let json = {
        a: 1,
        b: 2
      }
      map.set(json, "haon");
      map.get(json);
    };
  </script>
</body>

</html>